package cn.broadsense.biz.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 点位事项数据
 *
 * @TableName t_data_item
 */
@TableName(value = "t_data_item")
@Data
public class DataItem implements Serializable {
    private static final long serialVersionUID = -4248514811843639971L;

    /**
     * id
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("自增主键")
    private Long id;

    /**
     * 事项编码
     */
    @ApiModelProperty("事项编码")
    private String itemCode;

    /**
     * 点位id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long channelId;

    /**
     * 点位编码
     */
    private String channelCode;

    /**
     * 采集员用户id
     */
    private Long collectUserId;

    /**
     * 采集员用户名称
     */
    private String collectUserName;

    /**
     * 0 待完成 1待审核 2已驳回 3已完成
     */
    private Integer status;

    /**
     * 采集的数据 JSON
     */
    private String collectData;

    /**
     * 暂存的采集的数据 JSON
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String holdCollectData;

    /**
     * 暂存时间
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Date holdTime;

    /**
     * 模板id
     */
    private Long templateId;

    /**
     * 模板名称
     */
    private String templateName;

    /**
     * 事项描述
     */
    private String itemDesc;

    /**
     * 点位名称
     */
    private String channelName;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date updateTime;

    /**
     * 更新者
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /**
     * 创建者
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String createBy;

    private Date submitTime;

    private Date reviewTime;

    private String reviewResult;
}
